gdk/toplevelsize: Add way to set margin
authorJonas Ådahl <jadahl@gmail.com>
Tue, 24 Nov 2020 14:51:56 +0000 (15:51 +0100)
committerJonas Ådahl <jadahl@gmail.com>
Mon, 7 Dec 2020 08:46:39 +0000 (09:46 +0100)
Will be used to communicate the shadow margin, instead of using
gdk_surface_set_shadow_width().

Also set these values in gtkwindow.c.

gdk/gdktoplevelsize.c
gdk/gdktoplevelsize.h
gdk/gdktoplevelsizeprivate.h
gtk/gtkwindow.c

index e5802782d4a46a6bc67e2d65efce96830b6d5ede..7cd09ebd5ee30ba6b579291ffc0c234ac967afa7 100644 (file)
@@ -118,6 +118,20 @@ gdk_toplevel_size_set_min_size (GdkToplevelSize *size,
   size->min_height = min_height;
 }
 
+void
+gdk_toplevel_size_set_margin (GdkToplevelSize *size,
+                              int              left,
+                              int              right,
+                              int              top,
+                              int              bottom)
+{
+  size->margin.is_valid = TRUE;
+  size->margin.left = left;
+  size->margin.right = right;
+  size->margin.top = top;
+  size->margin.bottom = bottom;
+}
+
 void
 gdk_toplevel_size_validate (GdkToplevelSize *size)
 {
index 013a061ee9a9132e83ef84e8afb4ce6dc94700f6..41f8a4a604b4425dee1e677ab2a8a2f6f3077482 100644 (file)
@@ -54,6 +54,13 @@ void                    gdk_toplevel_size_set_min_size  (GdkToplevelSize       *
                                                          int                    min_width,
                                                          int                    min_height);
 
+GDK_AVAILABLE_IN_ALL
+void                    gdk_toplevel_size_set_margin    (GdkToplevelSize       *size,
+                                                         int                    left,
+                                                         int                    right,
+                                                         int                    top,
+                                                         int                    bottom);
+
 G_END_DECLS
 
 #endif /* __GDK_TOPLEVEL_SIZE_H__ */
index 35765138883bde1094f469016ec6fa9adbf77ef5..f2c4461bf98cf724541a851176cbc399f50b2dc5 100644 (file)
@@ -30,6 +30,14 @@ struct _GdkToplevelSize
   int height;
   int min_width;
   int min_height;
+
+  struct {
+    gboolean is_valid;
+    int left;
+    int right;
+    int top;
+    int bottom;
+  } margin;
 };
 
 void gdk_toplevel_size_init (GdkToplevelSize *size,
index fc2cd4a986b0f701b98481511348c14079d77c4a..67c9d721ba34b15b60296c610104125a9e45c3aa 100644 (file)
@@ -4364,6 +4364,13 @@ toplevel_compute_size (GdkToplevel     *toplevel,
   min_height = MIN (min_height + shadow.top + shadow.bottom, height);
 
   gdk_toplevel_size_set_min_size (size, min_width, min_height);
+
+  if (priv->use_client_shadow)
+    {
+      gdk_toplevel_size_set_margin (size,
+                                    shadow.left, shadow.right,
+                                    shadow.top, shadow.bottom);
+    }
 }
 
 static void